home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DDrawContext.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  14.6 KB  |  518 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DDrawContext.h
  3.  
  4.      Contains:    Draw context class types and routines                               
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DDRAWCONTEXT__
  18. #define __QD3DDRAWCONTEXT__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25. #if TARGET_OS_MAC
  26. #ifndef __QUICKDRAW__
  27.     #include <Quickdraw.h>
  28. #endif
  29.  
  30. #ifndef __FIXMATH__
  31.     #include <FixMath.h>
  32. #endif
  33.  
  34. #ifndef __GXTYPES__
  35.     #include <GXTypes.h>
  36. #endif
  37.  
  38. #endif  /* TARGET_OS_MAC */
  39.  
  40.  
  41. #if TARGET_OS_UNIX
  42.     #include <X11/Xlib.h>
  43.     #include <X11/Xutil.h>
  44. #endif    /* TARGET_OS_WIN32 */
  45.  
  46.  
  47. #if TARGET_OS_WIN32
  48.     /******************************************************************************
  49.      *                                                                             **
  50.      * ABOUT   QD3D_NO_DIRECTDRAW:     (Win32 Only)                                 **
  51.      *                                                                             **
  52.      * NOTE: Define QD3D_NO_DIRECTDRAW for your application makefile/project     **
  53.      *       only if you don't need Q3DDSurfaceDrawContext support and don't     **
  54.      *       have access to ddraw.h.                                             ** 
  55.      *                                                                             **
  56.      *****************************************************************************/
  57.     #include <windows.h>
  58.     #if !defined(QD3D_NO_DIRECTDRAW)
  59.         #include <ddraw.h>
  60.     #endif /* !QD3D_NO_DIRECTDRAW */
  61. #endif  /*  TARGET_OS_WIN32  */
  62.  
  63.  
  64.  
  65. #if PRAGMA_ONCE
  66. #pragma once
  67. #endif
  68.  
  69. #ifdef __cplusplus
  70. extern "C" {
  71. #endif
  72.  
  73. #if PRAGMA_IMPORT
  74. #pragma import on
  75. #endif
  76.  
  77. #if PRAGMA_STRUCT_ALIGN
  78.     #pragma options align=power
  79. #elif PRAGMA_STRUCT_PACKPUSH
  80.     #pragma pack(push, 2)
  81. #elif PRAGMA_STRUCT_PACK
  82.     #pragma pack(2)
  83. #endif
  84.  
  85. #if PRAGMA_ENUM_ALWAYSINT
  86.     #pragma enumsalwaysint on
  87. #elif PRAGMA_ENUM_OPTIONS
  88.     #pragma option enum=int
  89. #elif PRAGMA_ENUM_PACK
  90.     #if __option(pack_enums)
  91.         #define PRAGMA_ENUM_PACK__QD3DDRAWCONTEXT__
  92.     #endif
  93.     #pragma options(!pack_enums)
  94. #endif
  95.  
  96. /******************************************************************************
  97.  **                                                                             **
  98.  **                            DrawContext Data Structures                         **
  99.  **                                                                             **
  100.  *****************************************************************************/
  101.  
  102. enum TQ3DrawContextClearImageMethod {
  103.     kQ3ClearMethodNone            = 0,
  104.     kQ3ClearMethodWithColor        = 1
  105. };
  106. typedef enum TQ3DrawContextClearImageMethod TQ3DrawContextClearImageMethod;
  107.  
  108.  
  109.  
  110. struct TQ3DrawContextData {
  111.     TQ3DrawContextClearImageMethod     clearImageMethod;
  112.     TQ3ColorARGB                     clearImageColor;
  113.     TQ3Area                         pane;
  114.     TQ3Boolean                         paneState;
  115.     TQ3Bitmap                         mask;
  116.     TQ3Boolean                         maskState;
  117.     TQ3Boolean                         doubleBufferState;
  118. };
  119. typedef struct TQ3DrawContextData        TQ3DrawContextData;
  120. /******************************************************************************
  121.  **                                                                             **
  122.  **                                DrawContext Routines                         **
  123.  **                                                                             **
  124.  *****************************************************************************/
  125. EXTERN_API_C( TQ3ObjectType )
  126. Q3DrawContext_GetType            (TQ3DrawContextObject     drawContext);
  127.  
  128. EXTERN_API_C( TQ3Status )
  129. Q3DrawContext_SetData            (TQ3DrawContextObject     context,
  130.                                  const TQ3DrawContextData * contextData);
  131.  
  132. EXTERN_API_C( TQ3Status )
  133. Q3DrawContext_GetData            (TQ3DrawContextObject     context,
  134.                                  TQ3DrawContextData *    contextData);
  135.  
  136. EXTERN_API_C( TQ3Status )
  137. Q3DrawContext_SetClearImageColor (TQ3DrawContextObject     context,
  138.                                  const TQ3ColorARGB *    color);
  139.  
  140. EXTERN_API_C( TQ3Status )
  141. Q3DrawContext_GetClearImageColor (TQ3DrawContextObject     context,
  142.                                  TQ3ColorARGB *            color);
  143.  
  144. EXTERN_API_C( TQ3Status )
  145. Q3DrawContext_SetPane            (TQ3DrawContextObject     context,
  146.                                  const TQ3Area *        pane);
  147.  
  148. EXTERN_API_C( TQ3Status )
  149. Q3DrawContext_GetPane            (TQ3DrawContextObject     context,
  150.                                  TQ3Area *                pane);
  151.  
  152. EXTERN_API_C( TQ3Status )
  153. Q3DrawContext_SetPaneState        (TQ3DrawContextObject     context,
  154.                                  TQ3Boolean             state);
  155.  
  156. EXTERN_API_C( TQ3Status )
  157. Q3DrawContext_GetPaneState        (TQ3DrawContextObject     context,
  158.                                  TQ3Boolean *            state);
  159.  
  160. EXTERN_API_C( TQ3Status )
  161. Q3DrawContext_SetClearImageMethod (TQ3DrawContextObject  context,
  162.                                  TQ3DrawContextClearImageMethod  method);
  163.  
  164. EXTERN_API_C( TQ3Status )
  165. Q3DrawContext_GetClearImageMethod (TQ3DrawContextObject  context,
  166.                                  TQ3DrawContextClearImageMethod * method);
  167.  
  168. EXTERN_API_C( TQ3Status )
  169. Q3DrawContext_SetMask            (TQ3DrawContextObject     context,
  170.                                  const TQ3Bitmap *        mask);
  171.  
  172. EXTERN_API_C( TQ3Status )
  173. Q3DrawContext_GetMask            (TQ3DrawContextObject     context,
  174.                                  TQ3Bitmap *            mask);
  175.  
  176. EXTERN_API_C( TQ3Status )
  177. Q3DrawContext_SetMaskState        (TQ3DrawContextObject     context,
  178.                                  TQ3Boolean             state);
  179.  
  180. EXTERN_API_C( TQ3Status )
  181. Q3DrawContext_GetMaskState        (TQ3DrawContextObject     context,
  182.                                  TQ3Boolean *            state);
  183.  
  184. EXTERN_API_C( TQ3Status )
  185. Q3DrawContext_SetDoubleBufferState (TQ3DrawContextObject  context,
  186.                                  TQ3Boolean             state);
  187.  
  188. EXTERN_API_C( TQ3Status )
  189. Q3DrawContext_GetDoubleBufferState (TQ3DrawContextObject  context,
  190.                                  TQ3Boolean *            state);
  191.  
  192.  
  193. /******************************************************************************
  194.  **                                                                             **
  195.  **                            Pixmap Data Structure                             **
  196.  **                                                                             **
  197.  *****************************************************************************/
  198.  
  199. struct TQ3PixmapDrawContextData {
  200.     TQ3DrawContextData                 drawContextData;
  201.     TQ3Pixmap                         pixmap;
  202. };
  203. typedef struct TQ3PixmapDrawContextData    TQ3PixmapDrawContextData;
  204. /******************************************************************************
  205.  **                                                                             **
  206.  **                        Pixmap DrawContext Routines                             **
  207.  **                                                                             **
  208.  *****************************************************************************/
  209. EXTERN_API_C( TQ3DrawContextObject )
  210. Q3PixmapDrawContext_New            (const TQ3PixmapDrawContextData * contextData);
  211.  
  212. EXTERN_API_C( TQ3Status )
  213. Q3PixmapDrawContext_SetPixmap    (TQ3DrawContextObject     drawContext,
  214.                                  const TQ3Pixmap *        pixmap);
  215.  
  216. EXTERN_API_C( TQ3Status )
  217. Q3PixmapDrawContext_GetPixmap    (TQ3DrawContextObject     drawContext,
  218.                                  TQ3Pixmap *            pixmap);
  219.  
  220.  
  221.  
  222. #if TARGET_OS_MAC
  223. /******************************************************************************
  224.  **                                                                             **
  225.  **                        Macintosh DrawContext Data Structures                 **
  226.  **                                                                             **
  227.  *****************************************************************************/
  228.  
  229. enum TQ3MacDrawContext2DLibrary {
  230.     kQ3Mac2DLibraryNone            = 0,
  231.     kQ3Mac2DLibraryQuickDraw    = 1,
  232.     kQ3Mac2DLibraryQuickDrawGX    = 2
  233. };
  234. typedef enum TQ3MacDrawContext2DLibrary TQ3MacDrawContext2DLibrary;
  235.  
  236.  
  237.  
  238. struct TQ3MacDrawContextData {
  239.     TQ3DrawContextData                 drawContextData;
  240.     CWindowPtr                         window;
  241.     TQ3MacDrawContext2DLibrary         library;
  242.     gxViewPort                         viewPort;
  243.     CGrafPtr                         grafPort;
  244. };
  245. typedef struct TQ3MacDrawContextData    TQ3MacDrawContextData;
  246. /******************************************************************************
  247.  **                                                                             **
  248.  **                        Macintosh DrawContext Routines                         **
  249.  **                                                                             **
  250.  *****************************************************************************/
  251. EXTERN_API_C( TQ3DrawContextObject )
  252. Q3MacDrawContext_New            (const TQ3MacDrawContextData * drawContextData);
  253.  
  254. EXTERN_API_C( TQ3Status )
  255. Q3MacDrawContext_SetWindow        (TQ3DrawContextObject     drawContext,
  256.                                  CWindowPtr             window);
  257.  
  258. EXTERN_API_C( TQ3Status )
  259. Q3MacDrawContext_GetWindow        (TQ3DrawContextObject     drawContext,
  260.                                  CWindowPtr *            window);
  261.  
  262. EXTERN_API_C( TQ3Status )
  263. Q3MacDrawContext_SetGXViewPort    (TQ3DrawContextObject     drawContext,
  264.                                  gxViewPort             viewPort);
  265.  
  266. EXTERN_API_C( TQ3Status )
  267. Q3MacDrawContext_GetGXViewPort    (TQ3DrawContextObject     drawContext,
  268.                                  gxViewPort *            viewPort);
  269.  
  270. EXTERN_API_C( TQ3Status )
  271. Q3MacDrawContext_SetGrafPort    (TQ3DrawContextObject     drawContext,
  272.                                  CGrafPtr                 grafPort);
  273.  
  274. EXTERN_API_C( TQ3Status )
  275. Q3MacDrawContext_GetGrafPort    (TQ3DrawContextObject     drawContext,
  276.                                  CGrafPtr *                grafPort);
  277.  
  278. EXTERN_API_C( TQ3Status )
  279. Q3MacDrawContext_Set2DLibrary    (TQ3DrawContextObject     drawContext,
  280.                                  TQ3MacDrawContext2DLibrary  library);
  281.  
  282. EXTERN_API_C( TQ3Status )
  283. Q3MacDrawContext_Get2DLibrary    (TQ3DrawContextObject     drawContext,
  284.                                  TQ3MacDrawContext2DLibrary * library);
  285.  
  286. #endif  /* TARGET_OS_MAC */
  287.  
  288. #if TARGET_OS_UNIX
  289. /******************************************************************************
  290.  **                                                                             **
  291.  **                        X/Windows DrawContext Data Structures                 **
  292.  **                                                                             **
  293.  *****************************************************************************/
  294. typedef struct OpaqueTQ3XBufferObject*     TQ3XBufferObject;
  295.  
  296. struct TQ3XColormapData {
  297.     long                             baseEntry;
  298.     long                             maxRed;
  299.     long                             maxGreen;
  300.     long                             maxBlue;
  301.     long                             multRed;
  302.     long                             multGreen;
  303.     long                             multBlue;
  304. };
  305. typedef struct TQ3XColormapData            TQ3XColormapData;
  306.  
  307. struct TQ3XDrawContextData {
  308.     TQ3DrawContextData                 contextData;
  309.     Display *                        display;
  310.     Drawable                         drawable;
  311.     Visual *                        visual;
  312.     Colormap                         cmap;
  313.     TQ3XColormapData *                colorMapData;
  314. };
  315. typedef struct TQ3XDrawContextData        TQ3XDrawContextData;
  316. /******************************************************************************
  317.  **                                                                             **
  318.  **                        X/Windows DrawContext Routines                         **
  319.  **                                                                             **
  320.  *****************************************************************************/
  321. #ifdef XDC_OLD
  322. EXTERN_API_C( TQ3DrawContextObject )
  323. Q3XDrawContext_New                (void);
  324.  
  325. EXTERN_API_C( void )
  326. Q3XDrawContext_Set                (TQ3DrawContextObject     drawContext,
  327.                                  unsigned long             flag,
  328.                                  void *                    data);
  329.  
  330. EXTERN_API_C( void )
  331. Q3XDrawContext_Get                (TQ3DrawContextObject     drawContext,
  332.                                  unsigned long             flag,
  333.                                  void *                    data);
  334.  
  335. #endif  /* defined(XDC_OLD) */
  336.  
  337. EXTERN_API_C( TQ3XBufferObject )
  338. Q3XBuffers_New                    (Display *                dpy,
  339.                                  unsigned long             numBuffers,
  340.                                  Window                 window);
  341.  
  342. EXTERN_API_C( void )
  343. Q3XBuffers_Swap                    (Display *                dpy,
  344.                                  TQ3XBufferObject         buffers);
  345.  
  346. EXTERN_API_C( XVisualInfo *)
  347. Q3X_GetVisualInfo                (Display *                dpy,
  348.                                  Screen *                screen);
  349.  
  350.  
  351. EXTERN_API_C( TQ3DrawContextObject )
  352. Q3XDrawContext_New                (const TQ3XDrawContextData * xContextData);
  353.  
  354. EXTERN_API_C( TQ3Status )
  355. Q3XDrawContext_SetDisplay        (TQ3DrawContextObject     drawContext,
  356.                                  const Display *        display);
  357.  
  358. EXTERN_API_C( TQ3Status )
  359. Q3XDrawContext_GetDisplay        (TQ3DrawContextObject     drawContext,
  360.                                  Display **                display);
  361.  
  362. EXTERN_API_C( TQ3Status )
  363. Q3XDrawContext_SetDrawable        (TQ3DrawContextObject     drawContext,
  364.                                  Drawable                 drawable);
  365.  
  366. EXTERN_API_C( TQ3Status )
  367. Q3XDrawContext_GetDrawable        (TQ3DrawContextObject     drawContext,
  368.                                  Drawable *                drawable);
  369.  
  370. EXTERN_API_C( TQ3Status )
  371. Q3XDrawContext_SetVisual        (TQ3DrawContextObject     drawContext,
  372.                                  const Visual *            visual);
  373.  
  374. EXTERN_API_C( TQ3Status )
  375. Q3XDrawContext_GetVisual        (TQ3DrawContextObject     drawContext,
  376.                                  Visual **                visual);
  377.  
  378. EXTERN_API_C( TQ3Status )
  379. Q3XDrawContext_SetColormap        (TQ3DrawContextObject     drawContext,
  380.                                  Colormap                 colormap);
  381.  
  382. EXTERN_API_C( TQ3Status )
  383. Q3XDrawContext_GetColormap        (TQ3DrawContextObject     drawContext,
  384.                                  Colormap *                colormap);
  385.  
  386. EXTERN_API_C( TQ3Status )
  387. Q3XDrawContext_SetColormapData    (TQ3DrawContextObject     drawContext,
  388.                                  const TQ3XColormapData * colormapData);
  389.  
  390. EXTERN_API_C( TQ3Status )
  391. Q3XDrawContext_GetColormapData    (TQ3DrawContextObject     drawContext,
  392.                                  TQ3XColormapData *        colormapData);
  393.  
  394. #endif  /* TARGET_OS_UNIX */
  395.  
  396. #if TARGET_OS_WIN32
  397. /******************************************************************************
  398.  **                                                                             **
  399.  **                         Win32 DrawContext Data Structures                      **
  400.  **                                                                             **
  401.  *****************************************************************************/
  402.  
  403. struct TQ3Win32DCDrawContextData {
  404.     TQ3DrawContextData                 drawContextData;
  405.     HDC                             hdc;
  406. };
  407. typedef struct TQ3Win32DCDrawContextData TQ3Win32DCDrawContextData;
  408. #ifndef QD3D_NO_DIRECTDRAW
  409.  
  410. enum TQ3DirectDrawObjectSelector {
  411.     kQ3DirectDrawObject            = 1,
  412.     kQ3DirectDrawObject2        = 2
  413. };
  414. typedef enum TQ3DirectDrawObjectSelector TQ3DirectDrawObjectSelector;
  415.  
  416.  
  417. enum TQ3DirectDrawSurfaceSelector {
  418.     kQ3DirectDrawSurface        = 1,
  419.     kQ3DirectDrawSurface2        = 2
  420. };
  421. typedef enum TQ3DirectDrawSurfaceSelector TQ3DirectDrawSurfaceSelector;
  422.  
  423.  
  424. struct TQ3DDSurfaceDescriptor {
  425.     TQ3DirectDrawObjectSelector        objectSelector;
  426.     union
  427.     {
  428.         LPDIRECTDRAW                lpDirectDraw;
  429.         LPDIRECTDRAW2                lpDirectDraw2;
  430.     };
  431.  
  432.     TQ3DirectDrawSurfaceSelector    surfaceSelector;
  433.     union
  434.     {
  435.         LPDIRECTDRAWSURFACE            lpDirectDrawSurface;
  436.         LPDIRECTDRAWSURFACE2        lpDirectDrawSurface2;
  437.     };
  438. };
  439. typedef struct TQ3DDSurfaceDescriptor TQ3DDSurfaceDescriptor;
  440.  
  441. struct TQ3DDSurfaceDrawContextData {
  442.     TQ3DrawContextData                drawContextData;
  443.     TQ3DDSurfaceDescriptor            ddSurfaceDescriptor;
  444. };
  445. typedef struct TQ3DDSurfaceDrawContextData TQ3DDSurfaceDrawContextData;
  446.  
  447. #endif  /* !defined(QD3D_NO_DIRECTDRAW) */
  448.  
  449. /******************************************************************************
  450.  **                                                                             **
  451.  **                            Win32DC DrawContext Routines                     **
  452.  **                                                                             **
  453.  *****************************************************************************/
  454. EXTERN_API_C( TQ3DrawContextObject )
  455. Q3Win32DCDrawContext_New        (const TQ3Win32DCDrawContextData * drawContextData);
  456.  
  457. EXTERN_API_C( TQ3Status )
  458. Q3Win32DCDrawContext_SetDC        (TQ3DrawContextObject     drawContext,
  459.                                  HDC                     newHDC);
  460.  
  461. EXTERN_API_C( TQ3Status )
  462. Q3Win32DCDrawContext_GetDC        (TQ3DrawContextObject     drawContext,
  463.                                  HDC *                    curHDC);
  464.  
  465. /******************************************************************************
  466.  **                                                                             **
  467.  **                            DDSurface DrawContext Routines                     **
  468.  **                                                                             **
  469.  *****************************************************************************/
  470. #ifndef QD3D_NO_DIRECTDRAW
  471. EXTERN_API_C( TQ3DrawContextObject )
  472. Q3DDSurfaceDrawContext_New        (const TQ3DDSurfaceDrawContextData * drawContextData);
  473.  
  474. EXTERN_API_C( TQ3Status )
  475. Q3DDSurfaceDrawContext_SetDirectDrawSurface (TQ3DrawContextObject  drawContext,
  476.                                  const TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
  477.  
  478. EXTERN_API_C( TQ3Status )
  479. Q3DDSurfaceDrawContext_GetDirectDrawSurface (TQ3DrawContextObject  drawContext,
  480.                                  TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
  481.  
  482. #endif  /* !defined(QD3D_NO_DIRECTDRAW) */
  483.  
  484. #endif  /* TARGET_OS_WIN32 */
  485.  
  486.  
  487.  
  488.  
  489.  
  490. #if PRAGMA_ENUM_ALWAYSINT
  491.     #pragma enumsalwaysint reset
  492. #elif PRAGMA_ENUM_OPTIONS
  493.     #pragma option enum=reset
  494. #elif defined(PRAGMA_ENUM_PACK__QD3DDRAWCONTEXT__)
  495.     #pragma options(pack_enums)
  496. #endif
  497.  
  498. #if PRAGMA_STRUCT_ALIGN
  499.     #pragma options align=reset
  500. #elif PRAGMA_STRUCT_PACKPUSH
  501.     #pragma pack(pop)
  502. #elif PRAGMA_STRUCT_PACK
  503.     #pragma pack()
  504. #endif
  505.  
  506. #ifdef PRAGMA_IMPORT_OFF
  507. #pragma import off
  508. #elif PRAGMA_IMPORT
  509. #pragma import reset
  510. #endif
  511.  
  512. #ifdef __cplusplus
  513. }
  514. #endif
  515.  
  516. #endif /* __QD3DDRAWCONTEXT__ */
  517.  
  518.